using Abp.Domain.Entities.Auditing;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
using Yozeev.UserManagerment.Users;

namespace Yozeev.BusinessLogic
{
    /// <summary>
    /// 航班
    /// </summary>
    public class Schedule : ByBranchEntity<Guid>
    {
        /// <summary>
        /// 航班编码
        /// </summary>
        public string ScheduleCode { get; set; }
        /// <summary>
        /// 航线标识
        /// </summary>
        public Guid RouteId { get; set; }
        [ForeignKey("RouteId")]
        public virtual Route Route { get; set; }
        /// <summary>
        /// 游船标识
        /// </summary>
        public Guid BoatId { get; set; }
        [ForeignKey("BoatId")]
        public virtual Boat Boat { get; set; }
        /// <summary>
        /// 日期
        /// </summary>
        public DateTime SaleDate { get; set; }
        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime StartTime { get; set; }
        /// <summary>
        /// 结束时间
        /// </summary>
        [Required]
        public DateTime EndTime { get; set; }
        /// <summary>
        /// 座位数量
        /// </summary>
        [Required]
        public long SeatQuantity { get; set; }
        /// <summary>
        /// 剩余数量
        /// </summary>
        [Required]
        public long SurplusQuantity { get; set; }
        /// <summary>
        /// 行程状态
        /// </summary>
        public ScheduleStatusEnum ScheduleStatus { get; set; }
        /// <summary>
        /// 审核状态
        /// </summary>
        public AuditStatusEnum AuditStatus { get; set; }
        /// <summary>
        /// 检票开始时间
        /// </summary>
        public DateTime CheckStartTime { get; set; }
        /// <summary>
        /// 检票结束时间
        /// </summary>
        public DateTime? CheckEndTime { get; set; }
        /// <summary>
        /// 预留数
        /// </summary>
        public long ReserveQuantity { get; set; }

        /// <summary>
        /// 标准仓数量
        /// </summary>
        public long StandardNum { get; set; }
        /// <summary>
        /// 标准仓剩余数
        /// </summary>
        public long StandardSurplusNum { get; set; }
        /// <summary>
        /// 标准仓预留数
        /// </summary>
        public long StandardReserveNum { get; set; }
        /// <summary>
        /// VIP仓数量
        /// </summary>
        public long VIPNum { get; set; }
        /// <summary>
        /// VIP仓剩余数
        /// </summary>
        public long VIPSurplusNum { get; set; }
        /// <summary>
        /// VIP仓预留数
        /// </summary>
        public long VIPReserveNum { get; set; }
        /// <summary>
        /// 包间数量
        /// </summary>
        public long CompartmentNum { get; set; }
        /// <summary>
        /// 包间剩余数量
        /// </summary>
        public long CompartmentSurplusNum { get; set; }
        /// <summary>
        /// 包间预留数
        /// </summary>
        public long CompartmentReserveNum { get; set; }
        /// <summary>
        /// 航班销售状态
        /// </summary>
        public ScheduleEnum ScheduleSaleStatus { get; set; }
        /// <summary>
        /// 预留票数备注
        /// </summary>
        public string Remark { get; set; }
    }
}
